As local area networks and high-speed connections to the Internet have become more pervasive, a greater number of computer users are utilizing the Internet and other networks for real-time streaming of multimedia. Streaming refers to the process of continually transmitting media to an endpoint, where it is typically displayed or otherwise provided to a user. Real-time streaming refers to the process of streaming media that is generated in real-time. For instance, a computer with a video capture device, such as a World Wide Web (“web”) camera (“webcam”), connected thereto can be utilized to stream audiovisual media to one or more other computers over a network in real-time.
In most real-time video streaming systems, it is necessary to perform some processing on the video frames before the frames are transmitted to a recipient. For instance, video frames may be compressed prior to transmission to reduce the amount of data transmitted. A video frame buffer is typically utilized to store the video frames prior to and/or during processing.
In most computer systems the amount of memory available to the video frame buffer is limited. As a result, the video frame buffer can quickly become full and, consequently, new frames arriving to the video frame buffer from a video capture device must be discarded, or “dropped.” Dropping consecutive video frames can cause significant degradation in video quality for a real-time video streaming application like video conferencing.
Some previous real-time video streaming solutions avoid dropping consecutive video frames by buffering a larger number of video frames. This solution, however, adds latency to the streaming transmission. Latency refers to the time between when a video frame is generated and the time it is displayed at the receiving computer. While additional latency can be acceptable during non real-time playback of a video stream, it is generally unacceptable during real-time video streaming.
It is with respect to these considerations and others that the disclosure made herein is presented.